;--------------------------------------------------------
; File Created by ChiponCC : ChipON  inc.
;--------------------------------------------------------
; chipon port for the 16-bit core
;--------------------------------------------------------
;	.file	"../cd4094.c"
	.radix dec
	.include "KF8TS2716.inc"
;--------------------------------------------------------
; external declarations
;--------------------------------------------------------
	.extern	_init_mcu
	.extern	__R2PCL
	.extern	_TOUCH_DEBUG_TRS_DEAL
	.extern	_TOUCH_DEBUG_SEND_OUT
	.extern	__KF8TS27_Get_Ver_Slide_W_
	.extern	__KF8TS27_Init_Touch_Slide_W_
	.extern	__KF8TS27_Touch_Process_Slide_W_
	.extern	__KF8TS27_Touch_TEST_Slide_W_
	.extern	__KF8TS27_Lib_Set_Slide_W_Parameter
	.extern	_LCD1602_Init
	.extern	_LCD1602_Clear
	.extern	_LCD1602_setxy
	.extern	_LCD1602_PrintString
	.extern	_LCD1602_PrintInteger
	.extern	_LCD1602_PrintHEX
	.extern	_LCD1602_PrintHEX_TWO
	.extern	_delay_ms
	.extern	_delay_us
	.extern	_STKR0
	.extern	_STK00
	.extern	_STK01
	.extern	_STK02
	.extern	_STK03
	.extern	_STK04
	.extern	_STK05
	.extern	_STK06
	.extern	_STK07
	.extern	_STK08
	.extern	_STK09
	.extern	_STK10
	.extern	_STK11
	.extern	_PSW_bits
	.extern	_P0_bits
	.extern	_P2_bits
	.extern	_P1_bits
	.extern	_P3_bits
	.extern	_INTCTL_bits
	.extern	_EIF1_bits
	.extern	_EIF2_bits
	.extern	_T1CTL_bits
	.extern	_PWMCTL_bits
	.extern	_BANK_bits
	.extern	_ADSCANCTL_bits
	.extern	_VDACS_bits
	.extern	_ANSEH_bits
	.extern	_ADCCTL0_bits
	.extern	_OPTR_bits
	.extern	_IP0_bits
	.extern	_IP1_bits
	.extern	_IP2_bits
	.extern	_TR0_bits
	.extern	_TR2_bits
	.extern	_TR1_bits
	.extern	_OSCSTA_bits
	.extern	_IP3_bits
	.extern	_VRECTL_bits
	.extern	_EIE1_bits
	.extern	_EIE2_bits
	.extern	_PCTL_bits
	.extern	_OSCCTL_bits
	.extern	_ANSEL_bits
	.extern	_PUR0_bits
	.extern	_IOCL_bits
	.extern	_ADCCTL1_bits
	.extern	_P0LR_bits
	.extern	_P2LR_bits
	.extern	_P1LR_bits
	.extern	_P3LR_bits
	.extern	_TR3_bits
	.extern	_EIE3_bits
	.extern	_EIF3_bits
	.extern	_T3CTL_bits
	.extern	_CTCTL0_bits
	.extern	_PUR1_bits
	.extern	_PUR2_bits
	.extern	_CTCTL1_bits
	.extern	_INTEDGCTL_bits
	.extern	_VBIASCTL_bits
	.extern	_VBIAS1EN_bits
	.extern	_VBIAS2EN_bits
	.extern	_VDAC_bits
	.extern	_RSCTL_bits
	.extern	_BRCTL_bits
	.extern	_TSCTL_bits
	.extern	_SSCICTL0_bits
	.extern	_SSCICTL1_bits
	.extern	_SSCISTA_bits
	.extern	_SSCIMSK_bits
	.extern	_WDTPS_bits
	.extern	_LEDCTL_bits
	.extern	_LEDPRE_bits
	.extern	_LEDDATA0_bits
	.extern	_LEDDATA1_bits
	.extern	_LEDDATA2_bits
	.extern	_LEDDATA3_bits
	.extern	_LEDDATA4_bits
	.extern	_LEDDATA5_bits
	.extern	_LEDDATA6_bits
	.extern	_LEDDATA7_bits
	.extern	_LEDOMS1_bits
	.extern	_LEDODS0_bits
	.extern	_LEDOMS0_bits
	.extern	_LEDODS1_bits
	.extern	_LEDLUM_bits
	.extern	_T4CTL_bits
	.extern	_sentbuf1
	.extern	_sentbuf2
	.extern	_sentbuf3
	.extern	_sentbuf4
	.extern	__KF8_LIBi_channel_flag_
	.extern	__KF8_LIBi_Slide_Press_Flag
	.extern	__KF8_LIBi_Slide_channel_out_
	.extern	__KF8_LIBi_Slide_distance_out_
	.extern	__KF8_LIBc_channel_
	.extern	__KF8_LIBi_Date_Change_
	.extern	__KF8_LIBc_baseline_count_
	.extern	__KF8_LIBi_buff_hit_
	.extern	__KF8_LIBi_buff_baseline_
	.extern	__KF8_LIBc_touch_count_
	.extern	__KF8_lib_Slide_Finded_MAX_I_T27_SW_
	.extern	__KF8_lib_Slide_Finded_MAX_I_Buf_T27_SW_
	.extern	__KF8_LIBi_Slide_round_count_
	.extern	__KF8_LIBi_Slide_channel_back_
	.extern	_CHS_AMOUNT
	.extern	_SLIDE_AMOUNT
	.extern	_TCS_AMOUNT
	.extern	_TCS_Slide_AMOUNT
	.extern	__KF8_Disturb_Protect_Circle_
	.extern	__KF8_DoubleKey_Compages_Limitable_Circle_
	.extern	__KF8_Key_Max_Pressed_Limitable_Circle_
	.extern	__KF8_BaseLine_Update_Circle_Count_For_UP_
	.extern	__KF8_BaseLine_Update_Circle_Count_For_Down_
	.extern	__KF8_Define_Disturb_Channels_Amount_
	.extern	__KF8_BasicLine_UP_Noise_Threshold_
	.extern	__KF8_BasicLine_Down_Noise_Threshold_
	.extern	__KF8_Data_Steady_Threshold_Set_
	.extern	__KF8_Inside_Reference_Channel_Disturb_Threshold_Set_
	.extern	__KF8_Inside_Reference_Channel_Declare_
	.extern	__KF8_TOUCH_CH_EN
	.extern	__SLIDE_DISTRIBUTION
	.extern	__SLIDE_RESOLUTION
	.extern	__SLIDE_SINGLE_RESOLUTION
	.extern	__SLIDE_OFFSET
	.extern	__KF8_Config_Finger_Threshold
	.extern	__KF8_Config_Finger_Threshold_In_Disturb_
	.extern	_T0
	.extern	_PCL
	.extern	_PSW
	.extern	_P0
	.extern	_P2
	.extern	_P1
	.extern	_P3
	.extern	_PCH
	.extern	_INTCTL
	.extern	_EIF1
	.extern	_EIF2
	.extern	_T1L
	.extern	_T1H
	.extern	_T1CTL
	.extern	_PWM1L
	.extern	_PWM1H
	.extern	_PWMCTL
	.extern	_PP1
	.extern	_BANK
	.extern	_ADSCANCTL
	.extern	_VDACS
	.extern	_ANSEH
	.extern	_ADCDATA0H
	.extern	_ADCCTL0
	.extern	_OPTR
	.extern	_IP0
	.extern	_IP1
	.extern	_IP2
	.extern	_TR0
	.extern	_TR2
	.extern	_TR1
	.extern	_OSCSTA
	.extern	_IP3
	.extern	_VRECAL1
	.extern	_VRECTL
	.extern	_EIE1
	.extern	_EIE2
	.extern	_PCTL
	.extern	_OSCCTL
	.extern	_OSCCAL0
	.extern	_ANSEL
	.extern	_PP2
	.extern	_PWM2L
	.extern	_PWM2H
	.extern	_PUR0
	.extern	_IOCL
	.extern	_OSCCAL1
	.extern	_NVMDATAH
	.extern	_NVMDATAL
	.extern	_NVMADDRH
	.extern	_NVMADDRL
	.extern	_NVMCTL0
	.extern	_NVMCTL1
	.extern	_ADCDATA0L
	.extern	_ADCCTL1
	.extern	_P0LR
	.extern	_P2LR
	.extern	_P1LR
	.extern	_P3LR
	.extern	_TR3
	.extern	_EIE3
	.extern	_EIF3
	.extern	_OSCCAL2
	.extern	_OSCCAL3
	.extern	_T3CTL
	.extern	_T3L
	.extern	_CTCTL0
	.extern	_T3H
	.extern	_PUR1
	.extern	_PUR2
	.extern	_CTCTL1
	.extern	_INTEDGCTL
	.extern	_VBIASCTL
	.extern	_VBIAS1EN
	.extern	_VBIAS2EN
	.extern	_VDAC
	.extern	_RSCTL
	.extern	_TXSDR
	.extern	_RXSDR
	.extern	_BRCTL
	.extern	_TSCTL
	.extern	_EUBRGL
	.extern	_EUBRGH
	.extern	_SSCICTL0
	.extern	_SSCICTL1
	.extern	_SSCISTA
	.extern	_SSCIBUFR
	.extern	_SSCIMSK
	.extern	_WDTPS
	.extern	_LEDCTL
	.extern	_LEDPRE
	.extern	_LEDDATA0
	.extern	_LEDDATA1
	.extern	_LEDDATA2
	.extern	_LEDDATA3
	.extern	_LEDDATA4
	.extern	_LEDDATA5
	.extern	_LEDDATA6
	.extern	_LEDDATA7
	.extern	_LEDOMS1
	.extern	_LEDODS0
	.extern	_LEDOMS0
	.extern	_LEDODS1
	.extern	_VRECAL2
	.extern	_VRECAL3
	.extern	_LEDLUM
	.extern	_T4L
	.extern	_T4H
	.extern	_T4REL
	.extern	_T4REH
	.extern	_T4CTL
	.extern	_RC32KCAL

	.extern I0R1
	.extern I0R7
	.extern I0PSW
	.extern I0PCH
	.extern I1R1
	.extern I1R7
	.extern I1PSW
	.extern I1PCH
	.extern STK11
	.extern STK10
	.extern STK09
	.extern STK08
	.extern STK07
	.extern STK06
	.extern STK05
	.extern STK04
	.extern STK03
	.extern STK02
	.extern STK01
	.extern STK00
;--------------------------------------------------------
; global declarations
;--------------------------------------------------------
	.global	_Write_cd4094
	.define _STK11	STK11
	.define _STK10	STK10
	.define _STK09	STK09
	.define _STK08	STK08
	.define _STK07	STK07
	.define _STK06	STK06
	.define _STK05	STK05
	.define _STK04	STK04
	.define _STK03	STK03
	.define _STK02	STK02
	.define _STK01	STK01
	.define _STK00	STK00

;--------------------------------------------------------
; global definitions
;--------------------------------------------------------
;--------------------------------------------------------
; absolute symbol definitions
;--------------------------------------------------------
;--------------------------------------------------------
; compiler-defined variables
;--------------------------------------------------------
UDL_cd4094_0	.udata
r0x1000	.res	1
UDL_cd4094_1	.udata
r0x1001	.res	1
;--------------------------------------------------------
; initialized data
;--------------------------------------------------------
;--------------------------------------------------------
; overlayable items in internal ram 
;--------------------------------------------------------
;	.udata_ovr


func._Write_cd4094	.code
;***
;  PostBlock Stats: dbName = C
;***
;entry:  _Write_cd4094	;Function start
; 2 exit points
;has an exit
;functions called:
;   _delay_us
;   _delay_us
;   _delay_us
;   _delay_us
;3 compiler assigned registers:
;   r0x1000
;   r0x1001
;   STK00
;; Starting PostCode block
;	::->op : LABEL
;	::->op : FUNCTION
_Write_cd4094	;Function start
; 2 exit points
;	::->op : RECEIVE
;	.line	3; "../cd4094.c"	void Write_cd4094(unsigned char _data)
	BANKSEL	r0x1000
	MOV	r0x1000, R0
;	::->op :*  =
;	.line	6; "../cd4094.c"	CD4094_CLK_OUT();
	BANKSEL	_TR1_bits
	CLR	_TR1_bits, 1
;	::->op :*  =
;	.line	7; "../cd4094.c"	CD4094_DAT_OUT();
	BANKSEL	_TR1_bits
	CLR	_TR1_bits, 0
;	::->op : =
;	.line	8; "../cd4094.c"	for(_i=0;_i<8;_i++)
	BANKSEL	r0x1001
	CLR	r0x1001
;	::->op : LABEL
;	::->op : <
;unsigned compare: left < lit(0x8=8), size=1
_00004_DS_
	MOV	R0,# 0x08
	BANKSEL	r0x1001
	SUB	R0, r0x1001
;comparing bytes at offset 0
	JNB	PSW, 0
	JMP	_00008_DS_
;	::->op :*  =
;	.line	10; "../cd4094.c"	CD4094_CLK_OUTL();
	BANKSEL	_P1LR_bits
	CLR	_P1LR_bits, 1
;	::->op : BITWISEAND
;	.line	11; "../cd4094.c"	if(_data&0x80)
	BANKSEL	r0x1000
	JB	r0x1000, 7
	JMP	_00002_DS_
;	::->op :*  =
;	.line	13; "../cd4094.c"	CD4094_DAT_OUTH();
	BANKSEL	_P1LR_bits
	SET	_P1LR_bits, 0
;	::->op : GOTO
	JMP	_00003_DS_
;	::->op : LABEL
;	::->op :*  =
_00002_DS_
;	.line	17; "../cd4094.c"	CD4094_DAT_OUTL();
	BANKSEL	_P1LR_bits
	CLR	_P1LR_bits, 0
;	::->op : LABEL
;	::->op : SEND
;	::->op : CALL
_00003_DS_
;	.line	19; "../cd4094.c"	delay_us(1);
	MOV	R0,# 0x01
	BANKSEL	STK00
	MOV	STK00, R0
	MOV	R0,# 0x00
	PAGESEL	_delay_us
	CALL	_delay_us
	PAGESEL	$
;	::->op :*  =
;	.line	21; "../cd4094.c"	CD4094_CLK_OUTH();
	BANKSEL	_P1LR_bits
	SET	_P1LR_bits, 1
;	::->op : LEFT_OP
;	.line	22; "../cd4094.c"	_data=_data<<1;
	CLR	PSW, 0
	BANKSEL	r0x1000
	RLC	r0x1000
;	::->op : SEND
;	::->op : CALL
;	.line	23; "../cd4094.c"	delay_us(1);
	MOV	R0,# 0x01
	BANKSEL	STK00
	MOV	STK00, R0
	MOV	R0,# 0x00
	PAGESEL	_delay_us
	CALL	_delay_us
	PAGESEL	$
;	::->op : +
;	.line	8; "../cd4094.c"	for(_i=0;_i<8;_i++)
	BANKSEL	r0x1001
	INC	r0x1001
;	::->op : GOTO
	JMP	_00004_DS_
;	::->op : LABEL
;	::->op : ENDFUNCTION
_00008_DS_
	CRET	
; exit point of _Write_cd4094


;	code size estimation:
;	   32+   14 =    46 instructions (  120 byte)


	.end
